DateTime Within Extension Method
I wrote and extension method to DateTime today. I want to call something simple to see if one date is within a two days of another date. There isn’t a within method. I set out to create one and this what I came up with.
Let me know what you think.
using System;
using System.Collections.Generic;
namespace Rhyous.WebFramework.Handlers.Extensions
{
public enum DateTimeInterval
{
Miliseconds,
Seconds,
Minutes,
Hours,
Days,
Weeks,
Months,
Years
}
internal class DateTimeIntervalActionDictionary : Dictionary<DateTimeInterval, Func<double, TimeSpan>>
{
#region Singleton
private static readonly Lazy<DateTimeIntervalActionDictionary> Lazy = new Lazy<DateTimeIntervalActionDictionary>(() => new DateTimeIntervalActionDictionary());
public static DateTimeIntervalActionDictionary Instance { get { return Lazy.Value; } }
internal DateTimeIntervalActionDictionary()
{
Add(DateTimeInterval.Miliseconds, TimeSpan.FromMilliseconds);
Add(DateTimeInterval.Seconds, TimeSpan.FromSeconds);
Add(DateTimeInterval.Minutes, TimeSpan.FromMinutes);
Add(DateTimeInterval.Hours, TimeSpan.FromHours);
Add(DateTimeInterval.Days, TimeSpan.FromDays);
Add(DateTimeInterval.Weeks, (double d) => { return TimeSpan.FromDays(d * 7); });
Add(DateTimeInterval.Months, (double d) => { return TimeSpan.FromDays(d * 30); });
Add(DateTimeInterval.Years, (double d) => { return TimeSpan.FromDays(d * 365); });
}
#endregion
}
public static class DateExtensions
{
public static bool IsWithin(this DateTime dateTime, double interval, DateTimeInterval intervalType, DateTime comparisonDateTime)
{
TimeSpan allowedDiff = DateTimeIntervalActionDictionary.Instance[intervalType].Invoke(interval);
TimeSpan diff = dateTime - comparisonDateTime;
return allowedDiff <= diff;
}
}
}

